package com.sicocre.actions;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.sicocre.beans.Asesor;
import com.sicocre.beans.EmpleadoBean;
import com.sicocre.beans.Gerente;
import com.sicocre.beans.Sucursal;
import com.sicocre.business.service.IEmpleadoService;
import com.sicocre.utils.Constantes;


@Component
@Scope("request")
public class EmpleadoAction implements Serializable {

	private static final Logger log = Logger.getLogger(EmpleadoAction.class);

	/**
	 * 
	 */
	private static final long serialVersionUID = 7012951194965946228L;

	@Autowired
	private IEmpleadoService empleadoService;

	private EmpleadoBean empleado;

	private List<Gerente> gerentes;
	private List<Sucursal> sucursales;

	public static final String GERENTE = "GERENTE";
	public static final String ASESOR = "ASESOR";


	public EmpleadoAction(){
		System.out.println("hola");
		HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		String tipo = req.getParameter("tipoEmp");
		
	  
		if(GERENTE.equals(tipo)){
			empleado = new Gerente();
			empleado.setPuesto(GERENTE);
		}else if(ASESOR.equals(tipo)){
			empleado = new Asesor();
			empleado.setPuesto(ASESOR);
		}
	}

	@PostConstruct
	public void initForm(){
		HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
		if(req.getParameter("tipo") != null){
			String tipo = req.getParameter("tipo").toString();
			if("G".equals(tipo)){
				this.empleado = new Gerente();
				empleado.setPuesto(GERENTE);
			}else if("A".equals(tipo)){
				this.empleado = new Asesor();
				empleado.setPuesto(ASESOR);
			}
		}
		sucursales=empleadoService.getListaSucursales();
		gerentes = empleadoService.getListaGerentes();
	}




	public void guardar(){
		log.info("Iniciando proceso de guardado...");
		if(empleadoService.insertEmpleado(empleado)){
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_SUCCESS, Constantes.MSG_SUCCESS);
			FacesContext.getCurrentInstance().addMessage(null, message);
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_ERROR, Constantes.MSG_ERROR);
			FacesContext.getCurrentInstance().addMessage(null, message);
		}
	}


	public IEmpleadoService getEmpleadoService() {
		return empleadoService;
	}


	public void setEmpleadoService(IEmpleadoService empleadoService) {
		this.empleadoService = empleadoService;
	}


	public EmpleadoBean getEmpleado() {
		return empleado;
	}


	public void setEmpleado(EmpleadoBean empleado) {
		this.empleado = empleado;
	}


	/**
	 * @return the gerentes
	 */
	public List<Gerente> getGerentes() {
		return gerentes;
	}


	/**
	 * @param gerentes the gerentes to set
	 */
	public void setGerentes(List<Gerente> gerentes) {
		this.gerentes = gerentes;
	}

	/**
	 * @return the sucursales
	 */
	public List<Sucursal> getSucursales() {
		return sucursales;
	}

	/**
	 * @param sucursales the sucursales to set
	 */
	public void setSucursales(List<Sucursal> sucursales) {
		this.sucursales = sucursales;
	}


}
